Industrial controllers are special purpose computers used for controlling industrial processes or manufacturing equipment.
Under the direction of a stored program, the industrial controller examines a series of inputs reflecting the status of the controlled process and changes outputs affecting control of the process. The inputs and outputs are most simply binary, that is "on" or "off"; however, analog inputs and outputs, taking on a continuous range of values, are also used.
The various components of an industrial controller may be spatially distributed about a factory or manufacturing facility to be interconnected by one or more communication links. A number of different communication links are commonly used in industrial controllers including proprietary links defined and used by a particular manufacturer and open links such as ControlNet, DeviceNet and Ethernet whose specifications are published and may be used broadly by a number of manufacturers and suppliers. The communication links differ in physical aspects, for example, the type of media (e.g., co-axial cable, twisted pair, light fiber, etc.) as well as the electrical details of its operation, (e.g., baud rate, number of channels, word transmission size, etc.). At a higher level, the communication links differ in how messages are formatted and in the designation of the meaning of standardized messages.
These components of the industrial controller that are interconnected by the communication links may include a central controller together with remote input or output (I/O) modules accepting data for the central controller from the controlled process or machine and providing data from the central controller as outputs to various actuators on the controlled process or machine. Other components may include graphic displays or specialized secondary controllers such as for motors or the like.
This natural division of the industrial controller along communication links allows many different products to be developed that may be attached to the industrial controller to configure it for different applications. Normally a product will be designed based on a marketing specification that suggests certain functions to be provided by the product. The marketing specification may request that the product work with certain other products on a particular network, however what this entails is not well defined. Further, there is little ability to assess whether a product developed in this context will be inter-operable with other products not considered at the time of its development.